{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import mpl_toolkits.axisartist as AA\n",
    "fig = plt.figure()\n",
    "ax=fig.add_axes([0.1, 0.1, 0.8, 0.8], axes_class=AA.Axes)\n",
    "ax.plot([0,1,2,3])\n",
    "#ax.axis[\"right\"].set_visible(False)\n",
    "ax.axis[\"top\"].set_visible(False)\n",
    "ax.axis[\"y=0\"] = ax.new_floating_axis(nth_coord=1, value=2)\n",
    "ax.axis[\"right2\"] = ax.new_fixed_axis(loc=\"right\", offset=(20, 0))\n",
    "ax.set_ylabel(\"aaa\")\n",
    "ax.axis[\"bottom\"].major_ticklabels.set_color(\"b\")\n",
    "#ax.axis[\"bottom\"].major_ticklabels.set_visible(False)\n",
    "ax.axis[\"bottom\"].toggle(ticklabels=True)\n",
    "ax.axis[\"bottom\"].toggle(all=False)\n",
    "ax.axis[\"bottom\"].toggle(all=False, ticks=True)\n",
    "ax.axis[\"bottom\"].toggle(all=True, label=False)\n",
    "ax.axis[\"top\", \"right\"].toggle(ticklabels=True)\n",
    "ax.axis[:].major_ticks.set_color(\"r\")\n",
    "ax.axis[:].major_ticklabels.set_color(\"r\")\n",
    "ax.axis[\"left\"].major_ticklabels.set_axis_direction(\"left\")\n",
    "ax.axis[\"left\"].label.set_axis_direction(\"bottom\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(figsize=(4, 3), layout=\"constrained\")\n",
    "axs.spines[\"left\"].set_visible(False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
